package com.grm.common.utils;

import java.util.List;

/**
 * 集合分页工具类
 *
 * @param <T> 泛型
 * @author gaorimao
 * @since 2022-06-24
 */
public class ListPageUtils<T> {
    /**
     * 开始分页
     *
     * @param list     需要分页的list
     * @param pageNum  页码
     * @param pageSize 每页多少条数据
     * @return subList
     */
    public static <T> List<T> startPage(List<T> list, Integer pageNum, Integer pageSize) {
        if (list == null || list.size() == 0) {
            return null;
        }
        pageSize = pageSize < 10 ? 10 : pageSize;
        pageSize = pageSize > 100 ? 100 : pageSize;
        pageNum = pageNum <= 0 ? 1 : pageNum;
        // 记录总数
        int count = list.size();
        // 页数
        int pageCount = count / pageSize + count % pageSize;
        if (pageNum > pageCount) {
            pageNum = pageCount;
        }
        // 开始索引
        int fromIndex;
        // 结束索引
        int toIndex;
        fromIndex = (pageNum - 1) * pageSize;
        toIndex = Math.min(fromIndex + pageSize, count);
        return list.subList(fromIndex, toIndex);
    }
}
